package com.cn.wanxi.data.impl;

import com.cn.wanxi.data.MessageData;
import com.cn.wanxi.model.MessageModel;
import com.cn.wanxi.util.JDBC;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class MessageImpl implements MessageData {
    @Override
    public int Adding(MessageModel messageModel) {
        String sql="INSERT INTO `sys`.`sys_message` " +
                "`userName`, " +
                "`messageName`, " +
                "`view`, " +
                "`content`, " +
                "`email`, " +
                "`time`, " +
                " VALUES ('"+messageModel.getUserName()+"', " +
                "'"+messageModel.getMessageName()+"', " +
                "'"+messageModel.getView()+"', " +
                "'"+messageModel.getContent()+"', " +
                "'"+messageModel.getEmail()+"', " +
                "'"+messageModel.getTime()+"' ";
        return JDBC.excute(sql);
    }

    @Override
    public MessageModel findById(Integer messageId) {
        String sql = "select * from sys_message where messageId=" + messageId;
        ResultSet resultSet = JDBC.query(sql);
        List<MessageModel> list = setResultData(resultSet);
        return list.size() > 0 ? list.get(0) : null;
    }

    @Override
    public List<MessageModel> findAll(MessageModel messageModel) {
        String sql = "select * from sys_message " +
                "where true ";
        if (!"".equals(messageModel.getUserName()) && messageModel.getUserName()!=null) {
            sql += "and userName like '%" + messageModel.getUserName() + "%' ";
        }
        if (!"".equals(messageModel.getMessageName()) && messageModel.getMessageName()!=null) {
            sql += "and messageName like '%" + messageModel.getMessageName() + "%' ";
        }
        //搜索访问量
        if (!"".equals(messageModel.getLowView()) && "".equals(messageModel.getTopView()) && messageModel.getTopView()!=null && messageModel.getLowView()!=null) {
            sql += " and view >='" + messageModel.getLowView() + "'";
        }
        if ("".equals(messageModel.getLowView()) && !"".equals(messageModel.getTopView()) && messageModel.getTopView()!=null && messageModel.getLowView()!=null ) {
            sql += " and view <='" + messageModel.getTopView() + "'";
        }
        if (!"".equals(messageModel.getLowView()) && !"".equals(messageModel.getTopView()) && messageModel.getTopView()!=null && messageModel.getLowView()!=null) {
            sql += " and view between '" + messageModel.getLowView() + "' and '" + messageModel.getTopView() + "'";
        }
        //搜索时间区间
        if (!"".equals(messageModel.getLowTime()) && "".equals(messageModel.getTopTime()) && messageModel.getLowTime()!=null && messageModel.getTopTime()!=null) {
            sql += " and time >='" + messageModel.getLowTime() + "'";
        }
        if ("".equals(messageModel.getLowTime()) && !"".equals(messageModel.getTopTime()) && messageModel.getLowTime()!=null && messageModel.getTopTime()!=null) {
            sql += " and time <='" + messageModel.getTopTime() + "'";
        }
        if (!"".equals(messageModel.getLowTime()) && !"".equals(messageModel.getTopTime()) && messageModel.getLowTime()!=null && messageModel.getTopTime()!=null) {
            sql += " and time between '" + messageModel.getLowTime() + "' and '" + messageModel.getTopTime() + "'";
        }
        if (!"".equals(messageModel.getContent()) && messageModel.getContent()!=null) {
            sql += "and content like '%" + messageModel.getContent() + "%'";
        }
        if (!"".equals(messageModel.getEmail()) && messageModel.getEmail()!=null) {
            sql += "and email like '%" + messageModel.getEmail() + "%'";
        }

//        if (userModel.getEnable() != -1 && userModel.getEnable() != null){
//            if (userModel.getEnable() == 1){
//                sql +=" and enable=1";
//            }else{
//                sql +="and enable!=1";
//            }
//        }
        sql += "order by messageId desc";
        ResultSet resultSet = JDBC.query(sql);
        return setResultData(resultSet);
    }

    @Override
    public int del(Integer id) {
        String sql = "delete from sys_message where messageId =" + id;

        return JDBC.excute(sql);
    }

    @Override
    public int edit(MessageModel messageModel) {
        String sql = "update sys_message set messageName='" + messageModel.getMessageName() + "'where messageId =" + messageModel.getMessageId();
        return JDBC.excute(sql);
    }

    private List<MessageModel> setResultData(ResultSet resultSet) {
        List<MessageModel> list = new ArrayList<>();
        try {
            while (resultSet.next()) {
                MessageModel model = new MessageModel();
                model.setMessageId(resultSet.getInt("messageId"));
                model.setUserName(resultSet.getString("userName"));
                model.setMessageName(resultSet.getString("messageName"));
                model.setView(resultSet.getString("view"));
                model.setContent(resultSet.getString("content"));
                model.setEmail(resultSet.getString("email"));
                model.setTime(resultSet.getString("time"));
                list.add(model);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}
